iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 11
0
自我挑戰組

在Android Studio 3.x版開發Android系統的開發記事系列 第 11

在Android Studio 3.x版開發Android系統的開發記事-如何用資料庫的資料跟Spinner元件關連在一起。(下)

  • 分享至 

  • xImage
  •  
請在Android Studio 3.x版,新建一個專案。增加一個Empty Activity。再拉一個Spinner元件,順序來排列出來。如下圖所示:

https://ithelp.ithome.com.tw/upload/images/20181017/20000953p7fXMDOdKh.jpg

https://ithelp.ithome.com.tw/upload/images/20181017/20000953cYyeMNDpRb.jpg
拉好畫面,開始寫程式。請參考之我之前的文章,利用Volley物件,用GET的模式,取得JSON字串。再用JSONArray物件來解出欄位的資料,再組成字串陣列。將陣列跟Spinner物件連結在一起。請參考程式的註解。

public class MainActivity extends AppCompatActivity {

    //宣告物件名稱。
    private RequestQueue objqueue;
    private final static String strurl = "http://192.168.1.102:8088/newmap_admin/_api_gettags.php";

    private Spinner lst_tag;
    ArrayList<String> arytags;
    private StringRequest getRequest;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);

        //物件名稱跟Layout上的物件,產生連結。
        lst_tag = (Spinner)findViewById(R.id.lsttag);

        arytags=new ArrayList<>();

        //設定Volley物件。
        objqueue = Volley.newRequestQueue(this);

        //實做Volley物件,在StringRequest的函式,預設值就是Request.Method.GET,可以省略。
        //而strurl,就是要GET的API網址。
        //最後,還要Override二個監聽的事件。
        getRequest = new StringRequest(strurl, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                //response,表示是回傳值,就是API要回傳的字串,也可以是JSON字串。

                //宣告JSONArray時,要用try...catch包起來,不然會出現錯誤。
                try{
                    //將JSON字串,放到JSONArray中。
                    JSONArray array = new JSONArray(response);

                    //解出JSON的資料,將所要的資料,再寫入陣列中。
                    for (int i = 0; i < array.length(); i++) {
                        JSONObject jsonObject = array.getJSONObject(i);
                        String strtagname = jsonObject.getString("ctagname");
                        arytags.add(strtagname);
                    }
                }
                catch(JSONException e) {
                    e.printStackTrace();
                }

                //將陣列跟Spinner物件連結在一起。
                lst_tag.setAdapter(new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_dropdown_item, arytags));

            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                //如果發生錯誤,就是回傳VolleyError,可以顯示是什麼錯誤。
            }
        });

        //將getRequest物件加入Volley物件的queue中,執行跟API的溝通。
        objqueue.add(getRequest);
    }
}


程式可以在模擬器上執行,執行出來的結果,如下圖所示:下拉選單,就會列出電影的列表,如PHP網頁輸出的資料。
https://ithelp.ithome.com.tw/upload/images/20181017/20000953neYmC0bbSn.jpg


上一篇
在Android Studio 3.x版開發Android系統的開發記事-如何用資料庫的資料跟Spinner元件關連在一起。(上)
下一篇
在Android Studio 3.x版開發Android系統的開發記事-如何在Android上傳檔案(上)
系列文
在Android Studio 3.x版開發Android系統的開發記事30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
hsinyu1212
iT邦新手 5 級 ‧ 2021-06-11 16:38:09

我想請問一下圖片檔沒辦法抓取怎麼辦,我的程式碼都跟您的相同https://ithelp.ithome.com.tw/upload/images/20210611/20138362IDjivUNHmx.png]

我要留言

立即登入留言